#!/bin/bash

# OpenWhisk 工具部署脚本
# 功能：
# 1. 安装 Helm v3.17.1
# 2. 在 calculator 目录部署 Redis 计算器
# 3. 在 update 目录构建并安装 wsk-updater

set -e  # 遇到错误立即退出

# 获取当前脚本所在目录
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
BASE_DIR="$SCRIPT_DIR/openwhisk-tool"

echo "=== 开始 OpenWhisk 工具部署 ==="

# 0. 检查并安装 Helm v3.17.1
echo "正在检查 Helm 安装..."
if ! command -v helm &> /dev/null; then
    echo "Helm 未安装，正在安装 Helm v3.17.1..."
    
    # 下载指定版本的 Helm
    HELM_TAR="helm-v3.17.1-linux-amd64.tar.gz"
    wget https://get.helm.sh/$HELM_TAR || {
        echo "下载 Helm 失败!"
        exit 1
    }
    
    # 解压并安装
    tar -zxvf $HELM_TAR
    sudo mv linux-amd64/helm /usr/local/bin/helm
    rm -rf linux-amd64 $HELM_TAR
    
    # 验证安装
    if ! helm version --short | grep -q "v3.17.1"; then
        echo "Helm 安装验证失败!"
        exit 1
    fi
    echo "✅ Helm v3.17.1 安装成功"
else
    INSTALLED_VERSION=$(helm version --short | cut -d '+' -f 1)
    if [ "$INSTALLED_VERSION" != "v3.17.1" ]; then
        echo "提示: 已安装 Helm $INSTALLED_VERSION"
        exit 1
    fi
    echo "✅ Helm v3.17.1 已安装"
fi

# 1. 检查 openwhisk-tool 目录是否存在
if [ ! -d "$BASE_DIR" ]; then
    echo "错误：openwhisk-tool 目录不存在"
    echo "请先运行 install_code.sh 克隆仓库"
    exit 1
fi

# 2. 在 calculator 目录部署 Redis 计算器
CALCULATOR_DIR="$BASE_DIR/calculator"
echo "正在 calculator 目录部署 Redis 计算器..."
if [ -f "$CALCULATOR_DIR/redis_calculator.yaml" ]; then
    kubectl apply -f "$CALCULATOR_DIR/redis_calculator.yaml" || {
        echo "部署 Redis 计算器失败!"
        exit 1
    }
    echo "✅ Redis 计算器部署成功"
else
    echo "错误：redis_calculator.yaml 文件不存在"
    exit 1
fi

# 3. 在 update 目录构建 wsk-updater
UPDATE_DIR="$BASE_DIR/update"
echo "正在 update 目录构建 wsk-updater..."
if [ -f "$UPDATE_DIR/main.go" ]; then
    # 检查是否安装 Go
    if ! command -v go &> /dev/null; then
        echo "错误：Go 未安装，请先运行 install_go.sh 安装 Go"
        exit 1
    fi
    
    cd "$UPDATE_DIR"
    go build -o wsk-updater || {
        echo "构建 wsk-updater 失败!"
        exit 1
    }
    
    # 安装到系统路径
    sudo mv wsk-updater /usr/local/bin/ && \
    sudo chmod +x /usr/local/bin/wsk-updater || {
        echo "安装 wsk-updater 失败!"
        exit 1
    }
    echo "✅ wsk-updater 构建并安装成功"
else
    echo "错误：update 目录中未找到 main.go 文件"
    exit 1
fi

echo "=== 部署完成 ==="
echo "已执行操作："
echo "- 安装/验证 Helm $INSTALLED_VERSION"
echo "- 部署 Redis 计算器 (来自 $CALCULATOR_DIR)"
echo "- 安装 wsk-updater 到 /usr/local/bin/"